home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / comm / tcp / AmiTCPsdk_40.lha / AmiTCP-4.0 / netinclude / rpcsvc / yp.x < prev    next >
Text File  |  1994-10-02  |  5KB  |  264 lines

  1. /* @(#)yp.x    2.1 88/08/01 4.0 RPCSRC */
  2.  
  3.  
  4. /*
  5.  * Protocol description file for the Yellow Pages Service
  6.  */
  7.  
  8. const YPMAXRECORD = 1024;
  9. const YPMAXDOMAIN = 64;
  10. const YPMAXMAP = 64;
  11. const YPMAXPEER = 64;
  12.  
  13.  
  14. enum ypstat {
  15.     YP_TRUE        =  1,
  16.     YP_NOMORE    =  2,
  17.     YP_FALSE    =  0,
  18.     YP_NOMAP    = -1,
  19.     YP_NODOM    = -2,
  20.     YP_NOKEY    = -3,
  21.     YP_BADOP    = -4,
  22.     YP_BADDB    = -5,
  23.     YP_YPERR    = -6,
  24.     YP_BADARGS    = -7,
  25.     YP_VERS        = -8
  26. };
  27.  
  28.  
  29. enum ypxfrstat {
  30.     YPXFR_SUCC    =  1,
  31.     YPXFR_AGE    =  2,
  32.     YPXFR_NOMAP    = -1,
  33.     YPXFR_NODOM    = -2,
  34.     YPXFR_RSRC    = -3,
  35.     YPXFR_RPC    = -4,
  36.     YPXFR_MADDR    = -5,
  37.     YPXFR_YPERR    = -6,
  38.     YPXFR_BADARGS    = -7,
  39.     YPXFR_DBM    = -8,
  40.     YPXFR_FILE    = -9,
  41.     YPXFR_SKEW    = -10,
  42.     YPXFR_CLEAR    = -11,
  43.     YPXFR_FORCE    = -12,
  44.     YPXFR_XFRERR    = -13,
  45.     YPXFR_REFUSED    = -14
  46. };
  47.  
  48.  
  49. typedef string domainname<YPMAXDOMAIN>;
  50. typedef string mapname<YPMAXMAP>;
  51. typedef string peername<YPMAXPEER>;
  52. typedef opaque keydat<YPMAXRECORD>;
  53. typedef opaque valdat<YPMAXRECORD>;
  54.  
  55.  
  56. struct ypmap_parms {
  57.     domainname domain;    
  58.     mapname map;
  59.     unsigned int ordernum;
  60.     peername peer;
  61. };
  62.  
  63. struct ypreq_key {
  64.     domainname domain;
  65.     mapname map;
  66.     keydat key;
  67. };
  68.  
  69. struct ypreq_nokey {
  70.     domainname domain;    
  71.     mapname map;
  72. };
  73.     
  74. struct ypreq_xfr {
  75.     ypmap_parms map_parms;
  76.     unsigned int transid;
  77.     unsigned int prog;
  78.     unsigned int port;
  79. };
  80.  
  81.  
  82. struct ypresp_val {
  83.     ypstat stat;
  84.     valdat val;
  85. };
  86.  
  87. struct ypresp_key_val {
  88.     ypstat stat;
  89.     keydat key;
  90.     valdat val;
  91. };
  92.  
  93.  
  94. struct ypresp_master {
  95.     ypstat stat;    
  96.     peername peer;
  97. };
  98.  
  99. struct ypresp_order {
  100.     ypstat stat;
  101.     unsigned int ordernum;
  102. };
  103.  
  104. union ypresp_all switch (bool more) {
  105. case TRUE:
  106.     ypresp_key_val val;
  107. case FALSE:
  108.     void;
  109. };
  110.  
  111. struct ypresp_xfr {
  112.     unsigned int transid;
  113.     ypxfrstat xfrstat;
  114. };
  115.  
  116. struct ypmaplist {
  117.     mapname map;
  118.     ypmaplist *next;
  119. };
  120.  
  121. struct ypresp_maplist {
  122.     ypstat stat;
  123.     ypmaplist *maps;
  124. };
  125.  
  126. enum yppush_status {
  127.     YPPUSH_SUCC    =  1,    /* Success */
  128.     YPPUSH_AGE     =  2,    /* Master's version not newer */
  129.     YPPUSH_NOMAP    = -1,    /* Can't find server for map */
  130.     YPPUSH_NODOM    = -2,    /* Domain not supported */
  131.     YPPUSH_RSRC    = -3,    /* Local resource alloc failure */
  132.     YPPUSH_RPC    = -4,    /* RPC failure talking to server */
  133.     YPPUSH_MADDR     = -5,    /* Can't get master address */
  134.     YPPUSH_YPERR    = -6,    /* YP server/map db error */
  135.     YPPUSH_BADARGS    = -7,    /* Request arguments bad */
  136.     YPPUSH_DBM    = -8,    /* Local dbm operation failed */
  137.     YPPUSH_FILE    = -9,    /* Local file I/O operation failed */
  138.     YPPUSH_SKEW    = -10,    /* Map version skew during transfer */
  139.     YPPUSH_CLEAR    = -11,    /* Can't send "Clear" req to local ypserv */
  140.     YPPUSH_FORCE    = -12,    /* No local order number in map  use -f flag. */
  141.     YPPUSH_XFRERR     = -13,    /* ypxfr error */
  142.     YPPUSH_REFUSED    = -14     /* Transfer request refused by ypserv */
  143. };
  144.  
  145. struct yppushresp_xfr {
  146.     unsigned transid;
  147.     yppush_status status;
  148. };
  149.  
  150. /*
  151.  * Response structure and overall result status codes.  Success and failure
  152.  * represent two separate response message types.
  153.  */
  154.  
  155. enum ypbind_resptype {
  156.     YPBIND_SUCC_VAL = 1, 
  157.     YPBIND_FAIL_VAL = 2
  158. };
  159.  
  160. struct ypbind_binding {
  161.     opaque ypbind_binding_addr[4]; /* In network order */
  162.     opaque ypbind_binding_port[2]; /* In network order */
  163. };   
  164.  
  165. union ypbind_resp switch (ypbind_resptype ypbind_status) {
  166. case YPBIND_FAIL_VAL:
  167.         unsigned ypbind_error;
  168. case YPBIND_SUCC_VAL:
  169.         ypbind_binding ypbind_bindinfo;
  170. };     
  171.  
  172. /* Detailed failure reason codes for response field ypbind_error*/
  173.  
  174. const YPBIND_ERR_ERR    = 1;    /* Internal error */
  175. const YPBIND_ERR_NOSERV = 2;    /* No bound server for passed domain */
  176. const YPBIND_ERR_RESC   = 3;    /* System resource allocation failure */
  177.  
  178.  
  179. /*
  180.  * Request data structure for ypbind "Set domain" procedure.
  181.  */
  182. struct ypbind_setdom {
  183.     domainname ypsetdom_domain;
  184.     ypbind_binding ypsetdom_binding;
  185.     unsigned ypsetdom_vers;
  186. };
  187.  
  188.  
  189. /*
  190.  * YP access protocol
  191.  */
  192. program YPPROG {
  193.     version YPVERS {
  194.         void 
  195.         YPPROC_NULL(void) = 0;
  196.  
  197.         bool 
  198.         YPPROC_DOMAIN(domainname) = 1;    
  199.  
  200.         bool
  201.         YPPROC_DOMAIN_NONACK(domainname) = 2;
  202.  
  203.         ypresp_val
  204.         YPPROC_MATCH(ypreq_key) = 3;
  205.  
  206.         ypresp_key_val 
  207.         YPPROC_FIRST(ypreq_key) = 4;
  208.  
  209.         ypresp_key_val 
  210.         YPPROC_NEXT(ypreq_key) = 5;
  211.  
  212.         ypresp_xfr
  213.         YPPROC_XFR(ypreq_xfr) = 6;
  214.  
  215.         void
  216.         YPPROC_CLEAR(void) = 7;
  217.  
  218.         ypresp_all
  219.         YPPROC_ALL(ypreq_nokey) = 8;
  220.  
  221.         ypresp_master
  222.         YPPROC_MASTER(ypreq_nokey) = 9;
  223.  
  224.         ypresp_order
  225.         YPPROC_ORDER(ypreq_nokey) = 10;
  226.  
  227.         ypresp_maplist 
  228.         YPPROC_MAPLIST(domainname) = 11;
  229.     } = 2;
  230. } = 100004;
  231.  
  232.  
  233. /*
  234.  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
  235.  */
  236. program YPPUSH_XFRRESPPROG {
  237.     version YPPUSH_XFRRESPVERS {
  238.         void
  239.         YPPUSHPROC_NULL(void) = 0;
  240.  
  241.         yppushresp_xfr    
  242.         YPPUSHPROC_XFRRESP(void) = 1;
  243.     } = 1;
  244. } = 0x40000000;    /* transient: could be anything up to 0x5fffffff */
  245.  
  246.  
  247. /*
  248.  * YP binding protocol
  249.  */
  250. program YPBINDPROG {
  251.     version YPBINDVERS {
  252.         void
  253.         YPBINDPROC_NULL(void) = 0;
  254.     
  255.         ypbind_resp
  256.         YPBINDPROC_DOMAIN(domainname) = 1;
  257.  
  258.         void
  259.         YPBINDPROC_SETDOM(ypbind_setdom) = 2;
  260.     } = 2;
  261. } = 100007;
  262.  
  263.  
  264.